//==========================================================================
// Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
//==========================================================================
#ifndef _GPIO_H_
#define _GPIO_H_

/* Bit Position Macros */
#define GPIO_BIT_0    ( 1 << 0 )
#define GPIO_BIT_1    ( 1 << 1 )
#define GPIO_BIT_2    ( 1 << 2 )
#define GPIO_BIT_3    ( 1 << 3 )
#define GPIO_BIT_4    ( 1 << 4 )
#define GPIO_BIT_5    ( 1 << 5 )
#define GPIO_BIT_6    ( 1 << 6 )
#define GPIO_BIT_7    ( 1 << 7 )
#define GPIO_BIT_8    ( 1 << 8 )
#define GPIO_BIT_9    ( 1 << 9 )
#define GPIO_BIT_10   ( 1 << 10 )
#define GPIO_BIT_11   ( 1 << 11 )
#define GPIO_BIT_12   ( 1 << 12 )
#define GPIO_BIT_13   ( 1 << 13 )
#define GPIO_BIT_14   ( 1 << 14 )
#define GPIO_BIT_15   ( 1 << 15 )
#define GPIO_BIT_16   ( 1 << 16 )
#define GPIO_BIT_17   ( 1 << 17 )
#define GPIO_BIT_18   ( 1 << 18 )
#define GPIO_BIT_19   ( 1 << 19 )
#define GPIO_BIT_20   ( 1 << 20 )
#define GPIO_BIT_21   ( 1 << 21 )
#define GPIO_BIT_22   ( 1 << 22 )
#define GPIO_BIT_23   ( 1 << 23 )
#define GPIO_BIT_24   ( 1 << 24 )
#define GPIO_BIT_25   ( 1 << 25 )
#define GPIO_BIT_26   ( 1 << 26 )
#define GPIO_BIT_27   ( 1 << 27 )
#define GPIO_BIT_28   ( 1 << 28 )
#define GPIO_BIT_29   ( 1 << 29 )
#define GPIO_BIT_30   ( 1 << 30 )
#define GPIO_BIT_31   ( 1 << 31 )

/**
  GPIO Register Definitions
**/
typedef struct
{
    unsigned long GPLR0;             /* Level Detect Reg. Bank 0 */
    unsigned long GPLR1;             /* Level Detect Reg. Bank 1 */
    unsigned long GPLR2;             /* Level Detect Reg. Bank 2 */
    unsigned long GPDR0;            /* Data Direction Reg. Bank 0 */
    unsigned long GPDR1;            /* Data Direction Reg. Bank 1 */
    unsigned long GPDR2;            /* Data Direction Reg. Bank 2 */
    unsigned long GPSR0;            /* Pin Output Set Reg. Bank 0 */
    unsigned long GPSR1;            /* Pin Output Set Reg. Bank 1 */
    unsigned long GPSR2;            /* Pin Output Set Reg. Bank 2 */
    unsigned long GPCR0;            /* Pin Output Clr Reg. Bank 0 */
    unsigned long GPCR1;            /* Pin Output Clr Reg. Bank 1 */
    unsigned long GPCR2;            /* Pin Output Clr Reg. Bank 2 */
    unsigned long GRER0;   /* Ris. Edge Detect Enable Reg. Bank 0 */
    unsigned long GRER1;   /* Ris. Edge Detect Enable Reg. Bank 1 */
    unsigned long GRER2;   /* Ris. Edge Detect Enable Reg. Bank 2 */
    unsigned long GFER0;   /* Fal. Edge Detect Enable Reg. Bank 0 */
    unsigned long GFER1;   /* Fal. Edge Detect Enable Reg. Bank 1 */
    unsigned long GFER2;   /* Fal. Edge Detect Enable Reg. Bank 2 */
    unsigned long GEDR0;       /* Edge Detect Status Reg. Bank 0 */
    unsigned long GEDR1;       /* Edge Detect Status Reg. Bank 1 */
    unsigned long GEDR2;       /* Edge Detect Status Reg. Bank 2 */
    unsigned long GAFR0_L;  /* Alt. Function Select Reg.[  0:15 ] */
    unsigned long GAFR0_U;  /* Alt. Function Select Reg.[ 16:31 ] */
    unsigned long GAFR1_L;  /* Alt. Function Select Reg.[ 32:47 ] */
    unsigned long GAFR1_U;  /* Alt. Function Select Reg.[ 48:63 ] */
    unsigned long GAFR2_L;  /* Alt. Function Select Reg.[ 64:79 ] */
    unsigned long GAFR2_U;  /* Alt. Function Select Reg.[ 80:95 ] */
    unsigned long GAFR3_L;  /* Alt. Function Select Reg.[ 96:111] */
    unsigned long GAFR3_U;  /* Alt. Function Select Reg.[112:120] */
    unsigned long  RESERVED1[35];    /* addr. offset 0x074-0x0fc */
    unsigned long GPLR3;             /* Level Detect Reg. Bank 3 */
    unsigned long  RESERVED2[2];      /* addr. offset 0x104-0x108 */
    unsigned long GPDR3;            /* Data Direction Reg. Bank 3 */
    unsigned long  RESERVED3[2];      /* addr. offset 0x110-0x114 */
    unsigned long GPSR3;            /* Pin Output Set Reg. Bank 3 */
    unsigned long  RESERVED4[2];      /* addr. offset 0x11c-0x120 */
    unsigned long GPCR3;            /* Pin Output Clr Reg. Bank 3 */
    unsigned long  RESERVED5[2];      /* addr. offset 0x128-0x12c */
    unsigned long GRER3;   /* Ris. Edge Detect Enable Reg. Bank 3 */
    unsigned long  RESERVED6[2];      /* addr. offset 0x134-0x138 */
    unsigned long GFER3;   /* Fal. Edge Detect Enable Reg. Bank 3 */
    unsigned long  RESERVED7[2];      /* addr. offset 0x140-0x144 */
    unsigned long GEDR3;       /* Edge Detect Status Reg. Bank 3 */
} GPIO_REGS, *PGPIO_REGS;

//
// For use with GPIO registers GPLR_x, GPSR_x, GPCR_x, GPDR_x, GRER_x, GFER_x, GEDR_x
//
#define GPIO_0		0x00000001
#define GPIO_1		0x00000002
#define GPIO_2		0x00000004
#define GPIO_3		0x00000008
#define GPIO_4		0x00000010
#define GPIO_5		0x00000020
#define GPIO_6		0x00000040
#define GPIO_7		0x00000080
#define GPIO_8		0x00000100
#define GPIO_9		0x00000200
#define GPIO_10		0x00000400
#define GPIO_11		0x00000800
#define GPIO_12		0x00001000
#define GPIO_13		0x00002000
#define GPIO_14		0x00004000
#define GPIO_15		0x00008000
#define GPIO_16		0x00010000
#define GPIO_17		0x00020000
#define GPIO_18		0x00040000
#define GPIO_19		0x00080000
#define GPIO_20		0x00100000
#define GPIO_21		0x00200000
#define GPIO_22		0x00400000
#define GPIO_23		0x00800000
#define GPIO_24		0x01000000
#define GPIO_25		0x02000000
#define GPIO_26		0x04000000
#define GPIO_27		0x08000000
#define GPIO_28		0x10000000
#define GPIO_29		0x20000000
#define GPIO_30		0x40000000
#define GPIO_31		0x80000000

//
// For use with GPIO registers GPLR_y, GPSR_y, GPCR_y, GPDR_y, GRER_y, GFER_y, GEDR_y
//
#define GPIO_32		0x00000001
#define GPIO_33		0x00000002
#define GPIO_34		0x00000004
#define GPIO_35		0x00000008
#define GPIO_36		0x00000010
#define GPIO_37		0x00000020
#define GPIO_38		0x00000040
#define GPIO_39		0x00000080
#define GPIO_40		0x00000100
#define GPIO_41		0x00000200
#define GPIO_42		0x00000400
#define GPIO_43		0x00000800
#define GPIO_44		0x00001000
#define GPIO_45		0x00002000
#define GPIO_46		0x00004000
#define GPIO_47		0x00008000
#define GPIO_48		0x00010000
#define GPIO_49		0x00020000
#define GPIO_50		0x00040000
#define GPIO_51		0x00080000
#define GPIO_52		0x00100000
#define GPIO_53		0x00200000
#define GPIO_54		0x00400000
#define GPIO_55		0x00800000
#define GPIO_56		0x01000000
#define GPIO_57		0x02000000
#define GPIO_58		0x04000000
#define GPIO_59		0x08000000
#define GPIO_60		0x10000000
#define GPIO_61		0x20000000
#define GPIO_62		0x40000000
#define GPIO_63		0x80000000

//
// For use with GPIO registers GPLR_z, GPSR_z, GPCR_z, GPDR_z, GRER_z, GFER_z, GEDR_z
//
#define GPIO_64		0x00000001
#define GPIO_65		0x00000002
#define GPIO_66		0x00000004
#define GPIO_67		0x00000008
#define GPIO_68		0x00000010
#define GPIO_69		0x00000020
#define GPIO_70		0x00000040
#define GPIO_71		0x00000080
#define GPIO_72		0x00000100
#define GPIO_73		0x00000200
#define GPIO_74		0x00000400
#define GPIO_75		0x00000800
#define GPIO_76		0x00001000
#define GPIO_77		0x00002000
#define GPIO_78		0x00004000
#define GPIO_79		0x00008000
#define GPIO_80		0x00010000
#define GPIO_81		0x00020000
#define GPIO_82		0x00040000
#define GPIO_83		0x00080000
#define GPIO_84		0x00100000
#define GPIO_85		0x00200000
#define GPIO_86		0x00400000
#define GPIO_87		0x00800000
#define GPIO_88		0x01000000
#define GPIO_89		0x02000000
#define GPIO_90		0x04000000
#define GPIO_91		0x08000000
#define GPIO_92		0x10000000
#define GPIO_93		0x20000000
#define GPIO_94		0x40000000
#define GPIO_95		0x80000000

#define GPIO_96		0x00000001
#define GPIO_97		0x00000002
#define GPIO_98		0x00000004
#define GPIO_99		0x00000008
#define GPIO_100    0x00000010
#define GPIO_101    0x00000020
#define GPIO_102    0x00000040
#define GPIO_103    0x00000080
#define GPIO_104    0x00000100
#define GPIO_105    0x00000200
#define GPIO_106    0x00000400
#define GPIO_107    0x00000800
#define GPIO_108    0x00001000
#define GPIO_109    0x00002000
#define GPIO_110    0x00004000
#define GPIO_111    0x00008000
#define GPIO_112    0x00010000
#define GPIO_113    0x00020000
#define GPIO_114    0x00040000
#define GPIO_115    0x00080000
#define GPIO_116    0x00100000
#define GPIO_117    0x00200000
#define GPIO_118    0x00400000
#define GPIO_119    0x00800000
#define GPIO_120    0x01000000

/* Begin of GPIO Pin Values  */
#define GPIO_P_PHONE_INT            0
#define GPIO_P_PEN_INT              1
#define GPIO_P_SYS_EN               2
#define GPIO_P_SW_INT               3
#define GPIO_P_USB_PLUGIN           4
#define GPIO_PWR_CAP0               5
#define GPIO_PWR_CAP1               6
#define GPIO_PWR_CAP2               7
#define GPIO_PWR_CAP3               8
#define GPIO_P_LINECONTROL          9
#define GPIO_P_CLK_TOUT             10
#define GPIO_FLASH_ENB				11
#define GPIO_P_SD_PLUGIN            12
#define GPIO_P_USB_ID               13
#define GPIO_P_SSPDAV               14
#define GPIO_EMPTY1                 15
#define GPIO_P_PWMOUT0              16
#define GPIO_P_CIF_DD6              17
#define GPIO_P_KEY_BACKLIGHT        18
#define GPIO_P_LCD_RST              19
#define GPIO_P_SDCS2                20
#define GPIO_EMPTY2                 21
#define GPIO_P_CAMERA_RST           22
#define GPIO_P_SSPSCLK              23
#define GPIO_P_SSPFRAM              24
#define GPIO_P_SSPTXD               25
#define GPIO_P_SSPRXD               26
#define GPIO_P_SPKPA_SHUTDOWN       27
#define GPIO_P_AC97_BITCLK			28
#define GPIO_P_AC97_SDATA_IN		29
#define GPIO_P_AC97_SDATA_OUT       30
#define GPIO_P_AC97_SYNC			31
#define GPIO_P_SDIO_CLK             32
#define GPIO_EMPTY3                 33
#define GPIO_P_FFRXD                34
#define GPIO_P_FFCTS                35
#define GPIO_P_VIBRATION            36
#define GPIO_P_FFDSR                37
#define GPIO_P_FFRI	                38
#define GPIO_P_FFTXD                39
#define GPIO_P_FFDTR                40
#define GPIO_P_FFRTS                41
#define GPIO_P_BTRXD                42
#define GPIO_P_BTTXD                43
#define GPIO_P_PWM_G                44
#define GPIO_P_EARPA_UPDN           45
#define GPIO_P_ICP_RXD              46
#define GPIO_P_ICP_TXD              47
#define GPIO_P_CIF_DD5              48
#define GPIO_EMPTY4                 49
#define GPIO_P_CIF_DD3			    50
#define GPIO_P_CIF_DD2			    51
#define GPIO_P_CIF_DD4              52
#define GPIO_P_CIF_MCLK             53
#define GPIO_P_CIF_PCLK			    54
#define GPIO_P_CIF_DD1			    55
#define GPIO_P_MIC_CHOICE			56
#define GPIO_IRDA_ENB               57
#define GPIO_P_L_DD0                58
#define GPIO_P_L_DD1                59
#define GPIO_P_L_DD2                60
#define GPIO_P_L_DD3                61
#define GPIO_P_L_DD4                62
#define GPIO_P_L_DD5                63
#define GPIO_P_L_DD6                64
#define GPIO_P_L_DD7                65
#define GPIO_P_L_DD8                66
#define GPIO_P_L_DD9                67
#define GPIO_P_L_DD10               68
#define GPIO_P_L_DD11               69
#define GPIO_P_L_DD12               70
#define GPIO_P_L_DD13               71
#define GPIO_P_L_DD14               72
#define GPIO_P_L_DD15               73
#define GPIO_P_L_FCLK               74
#define GPIO_P_L_LCLK               75
#define GPIO_P_L_PCLK               76
#define GPIO_P_FM_ENABLE            77
#define GPIO_EMPTY5                 78
#define GPIO_P_CAMERA_SHDN          79
#define GPIO_P_LCD_RSB              80
#define GPIO_P_CIF_DD0              81
#define GPIO_LCD_PWRENB             82
#define GPIO_CAMERA_PWRENB          83
#define GPIO_P_CIF_FV               84
#define GPIO_P_CIF_LV               85
#define GPIO_P_L_DD16               86
#define GPIO_P_L_DD17               87
#define GPIO_USBHPWR1               88
#define GPIO_P_AMP_PWRENB           89
#define GPIO_P_EARPA_CLK            90
#define GPIO_P_PWM_B                91
#define GPIO_P_SDIO_DAT0            92
#define GPIO_P_ONKEY                93
#define GPIO_P_L_CS                 94
#define GPIO_P_L_SCL                95
#define GPIO_P_L_SI                 96
#define GPIO_P_KP_MKIN3             97
#define GPIO_P_KP_MKIN4             98
#define GPIO_VBUS_ENB               99
#define GPIO_P_KP_MKIN0             100
#define GPIO_P_KP_MKIN1             101
#define GPIO_P_KP_MKIN2             102
#define GPIO_P_KP_MKOUT0            103
#define GPIO_P_KP_MKOUT1            104
#define GPIO_P_KP_MKOUT2            105
#define GPIO_P_KP_MKOUT3            106
#define GPIO_P_KP_MKOUT4            107
#define GPIO_P_CIF_DD7              108
#define GPIO_P_SDIO_DAT1            109
#define GPIO_P_SDIO_DAT2            110
#define GPIO_P_SDIO_DAT3            111
#define GPIO_P_SDIO_CMD             112
#define GPIO_P_AC97_RST             113
#define GPIO_P_PWM_R                114
#define GPIO_FLASH_CONTROL          115
#define GPIO_VCC_CORE_1             116
#define GPIO_P_I2C_SCL              117
#define GPIO_P_I2C_SDA              118
#define GPIO_USBHPWR2               119
#define GPIO_VCC_CORE_2             120
/* End of GPIO Pin Values  */

/******* Begin of GPIO Pin Bit Position ********/
/* GPIO Pin Bank 0 */
#define GPIO_BIT_PHONE_INT			( GPIO_BIT_0 )
#define GPIO_BIT_PEN_INT			( GPIO_BIT_1 )
#define GPIO_BIT_SYS_EN				( GPIO_BIT_2 )
#define GPIO_BIT_SW_INT				( GPIO_BIT_3 )
#define GPIO_BIT_USB_PLUGIN			( GPIO_BIT_4 )
#define GPIO_BIT_PWR_CAP0			( GPIO_BIT_5 )
#define GPIO_BIT_PWR_CAP1			( GPIO_BIT_6 )
#define GPIO_BIT_PWR_CAP2			( GPIO_BIT_7 )
#define GPIO_BIT_PWR_CAP3			( GPIO_BIT_8 )
#define GPIO_BIT_LINECONTROL		( GPIO_BIT_9 )
#define GPIO_BIT_CLK_TOUT			( GPIO_BIT_10 )
#define GPIO_BIT_FLASH_ENB			( GPIO_BIT_11 )
#define GPIO_BIT_SD_PLUGIN			( GPIO_BIT_12 )
#define GPIO_BIT_USB_ID				( GPIO_BIT_13 )
#define GPIO_BIT_SSPDAV				( GPIO_BIT_14 )
#define GPIO_BIT_EMPTY1				( GPIO_BIT_15 )
#define GPIO_BIT_PWMOUT0			( GPIO_BIT_16 )
#define GPIO_BIT_CIF_DD6			( GPIO_BIT_17 )
#define GPIO_BIT_KEY_BACKLIGHT		( GPIO_BIT_18 )
#define GPIO_BIT_LCD_RST			( GPIO_BIT_19 )
#define GPIO_BIT_SDCS2				( GPIO_BIT_20 )
#define GPIO_BIT_EMPTY2				( GPIO_BIT_21 )
#define GPIO_BIT_CAMERA_RST			( GPIO_BIT_22 )
#define GPIO_BIT_SSPSCLK			( GPIO_BIT_23 )
#define GPIO_BIT_SSPFRAM			( GPIO_BIT_24 )
#define GPIO_BIT_SSPTXD				( GPIO_BIT_25 )
#define GPIO_BIT_SSPRXD				( GPIO_BIT_26 )
#define GPIO_BIT_SPKPA_SHUTDOWN		( GPIO_BIT_27 )
#define GPIO_BIT_AC97_BITCLK		( GPIO_BIT_28 )
#define GPIO_BIT_AC97_SDATA_IN		( GPIO_BIT_29 )
#define GPIO_BIT_AC97_SDATA_OUT		( GPIO_BIT_30 )
#define GPIO_BIT_AC97_SYNC			( GPIO_BIT_31 )

/* GPIO Pin Bank 1 */
#define GPIO_BIT_SDIO_CLK			( GPIO_BIT_0 )
#define GPIO_BIT_EMPTY3				( GPIO_BIT_1 )
#define GPIO_BIT_FFRXD				( GPIO_BIT_2 )
#define GPIO_BIT_FFCTS				( GPIO_BIT_3 )
#define GPIO_BIT_VIBRATION			( GPIO_BIT_4 )
#define GPIO_BIT_FFDSR				( GPIO_BIT_5 )
#define GPIO_BIT_FFRI				( GPIO_BIT_6 )
#define GPIO_BIT_FFTXD				( GPIO_BIT_7 )
#define GPIO_BIT_FFDTR				( GPIO_BIT_8 )
#define GPIO_BIT_FFRTS				( GPIO_BIT_9 )
#define GPIO_BIT_BTRXD				( GPIO_BIT_10 )
#define GPIO_BIT_BTTXD				( GPIO_BIT_11 )
#define GPIO_BIT_PWM_G				( GPIO_BIT_12 )
#define GPIO_BIT_EARPA_UPDN			( GPIO_BIT_13 )
#define GPIO_BIT_ICP_RXD			( GPIO_BIT_14 )
#define GPIO_BIT_ICP_TXD			( GPIO_BIT_15 )
#define GPIO_BIT_CIF_DD5			( GPIO_BIT_16 )
#define GPIO_BIT_EMPTY4				( GPIO_BIT_17 )
#define GPIO_BIT_CIF_DD3			( GPIO_BIT_18 )
#define GPIO_BIT_CIF_DD2			( GPIO_BIT_19 )
#define GPIO_BIT_CIF_DD4			( GPIO_BIT_20 )
#define GPIO_BIT_CIF_MCLK			( GPIO_BIT_21 )
#define GPIO_BIT_CIF_PCLK			( GPIO_BIT_22 )
#define GPIO_BIT_CIF_DD1			( GPIO_BIT_23 )
#define GPIO_BIT_MIC_CHOICE			( GPIO_BIT_24 )
#define GPIO_BIT_IRDA_ENB			( GPIO_BIT_25 )
#define GPIO_BIT_L_DD0				( GPIO_BIT_26 )
#define GPIO_BIT_L_DD1				( GPIO_BIT_27 )
#define GPIO_BIT_L_DD2				( GPIO_BIT_28 )
#define GPIO_BIT_L_DD3				( GPIO_BIT_29 )
#define GPIO_BIT_L_DD4				( GPIO_BIT_30 )
#define GPIO_BIT_L_DD5				( GPIO_BIT_31 )

/* GPIO Pin Bank 2 */
#define GPIO_BIT_L_DD6				( GPIO_BIT_0 )
#define GPIO_BIT_L_DD7				( GPIO_BIT_1 )
#define GPIO_BIT_L_DD8				( GPIO_BIT_2 )
#define GPIO_BIT_L_DD9				( GPIO_BIT_3 )
#define GPIO_BIT_L_DD10				( GPIO_BIT_4 )
#define GPIO_BIT_L_DD11				( GPIO_BIT_5 )
#define GPIO_BIT_L_DD12				( GPIO_BIT_6 )
#define GPIO_BIT_L_DD13				( GPIO_BIT_7 )
#define GPIO_BIT_L_DD14				( GPIO_BIT_8 )
#define GPIO_BIT_L_DD15				( GPIO_BIT_9 )
#define GPIO_BIT_L_FCLK				( GPIO_BIT_10 )
#define GPIO_BIT_L_LCLK				( GPIO_BIT_11 )
#define GPIO_BIT_L_PCLK			    ( GPIO_BIT_12 )
#define GPIO_BIT_FM_ENABLE			( GPIO_BIT_13 )
#define GPIO_BIT_EMPTY5				( GPIO_BIT_14 )
#define GPIO_BIT_CAMERA_SHDN		( GPIO_BIT_15 )
#define GPIO_BIT_LCD_RSB			( GPIO_BIT_16 )
#define GPIO_BIT_CIF_DD0			( GPIO_BIT_17 )
#define GPIO_BIT_LCD_PWRENB			( GPIO_BIT_18 )
#define GPIO_BIT_CAMERA_PWRENB		( GPIO_BIT_19 )
#define GPIO_BIT_CIF_FV				( GPIO_BIT_20 )
#define GPIO_BIT_CIF_LV			    ( GPIO_BIT_21 )
#define GPIO_BIT_L_DD16				( GPIO_BIT_22 )
#define GPIO_BIT_L_DD17				( GPIO_BIT_23 )
#define GPIO_BIT_USBHPWR1			( GPIO_BIT_24 )
#define GPIO_BIT_AMP_PWRENB			( GPIO_BIT_25 )
#define GPIO_BIT_EARPA_CLK			( GPIO_BIT_26 )
#define GPIO_BIT_PWM_B				( GPIO_BIT_27 )
#define GPIO_BIT_SDIO_DAT0			( GPIO_BIT_28 )
#define GPIO_BIT_ONKEY				( GPIO_BIT_29 )
#define GPIO_BIT_L_CS				( GPIO_BIT_30 )
#define GPIO_BIT_L_SCL				( GPIO_BIT_31 )

/* GPIO Pin Bank 3 */
#define GPIO_BIT_L_SI				( GPIO_BIT_0 )
#define GPIO_BIT_KP_MKIN3			( GPIO_BIT_1 )
#define GPIO_BIT_KP_MKIN4			( GPIO_BIT_2 )
#define GPIO_BIT_VBUS_ENB			( GPIO_BIT_3 )
#define GPIO_BIT_KP_MKIN0			( GPIO_BIT_4 )
#define GPIO_BIT_KP_MKIN1			( GPIO_BIT_5 )
#define GPIO_BIT_KP_MKIN2			( GPIO_BIT_6 )
#define GPIO_BIT_KP_MKOUT0			( GPIO_BIT_7 )
#define GPIO_BIT_KP_MKOUT1			( GPIO_BIT_8 )
#define GPIO_BIT_KP_MKOUT2			( GPIO_BIT_9 )
#define GPIO_BIT_KP_MKOUT3			( GPIO_BIT_10 )
#define GPIO_BIT_KP_MKOUT4			( GPIO_BIT_11 )
#define GPIO_BIT_CIF_DD7			( GPIO_BIT_12 )
#define GPIO_BIT_SDIO_DAT1			( GPIO_BIT_13 )
#define GPIO_BIT_SDIO_DAT2			( GPIO_BIT_14 )
#define GPIO_BIT_SDIO_DAT3			( GPIO_BIT_15 )
#define GPIO_BIT_SDIO_CMD			( GPIO_BIT_16 )
#define GPIO_BIT_AC97_RST			( GPIO_BIT_17 )
#define GPIO_BIT_PWM_R			    ( GPIO_BIT_18 )
#define GPIO_BIT_FLASH_CONTROL		( GPIO_BIT_19 )
#define GPIO_BIT_VCC_CORE_1			( GPIO_BIT_20 )
#define GPIO_BIT_I2C_SCL			( GPIO_BIT_21 )
#define GPIO_BIT_I2C_SDA			( GPIO_BIT_22 )
#define GPIO_BIT_USBHPWR2			( GPIO_BIT_23 )
#define GPIO_BIT_VCC_CORE_2			( GPIO_BIT_24 )
/******* End of GPIO Pin Bit Position ********/

/* XLLP GPIO API typedefs */
/* Bulverde has four GPIO register banks */
/* For non-alternate function registers */

typedef enum
{
    XLLP_GPIO_BANK_0,
    XLLP_GPIO_BANK_1,
    XLLP_GPIO_BANK_2,
    XLLP_GPIO_BANK_3
} XLLP_GPIO_REGISTER_BANK_T;


/* Bulverde has eight half GPIO register banks */
/* For only alternate function registers */
typedef enum
{
    XLLP_GPIO_HALF_BANK_0_L,
	XLLP_GPIO_HALF_BANK_0_U,
	XLLP_GPIO_HALF_BANK_1_L,
	XLLP_GPIO_HALF_BANK_1_U,
	XLLP_GPIO_HALF_BANK_2_L,
	XLLP_GPIO_HALF_BANK_2_U,
	XLLP_GPIO_HALF_BANK_3_L,
	XLLP_GPIO_HALF_BANK_3_U
} XLLP_GPIO_REGISTER_HALF_BANK_T;


typedef enum
{
    XLLP_GPIO_ALT_FN_0 = 0x0,
    XLLP_GPIO_ALT_FN_1 = 0x1,
    XLLP_GPIO_ALT_FN_2 = 0x2,
    XLLP_GPIO_ALT_FN_3 = 0x3
} XLLP_GPIO_ALT_FUNC_T;

#endif
